/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBeans;

import dao.DaoItemLocal;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import pojo.Item;

/**
 *
 * @author Andreia
 */
@ManagedBean
@SessionScoped
public class ItemBean {
    
    private Item item;
    private Boolean editando = false;
    private Item regAnterior;
    private Item itemSelecionado;
    private String itemPesquisa;
    
    @EJB
    private DaoItemLocal daoItem;
    
    public ItemBean() {
        item = new Item();
        itemSelecionado = new Item();
    }
    
    public Item getItem() {
        return item;
    }

    public void setItem(Item item) {
        this.item = item;
    }
    
    public void salvar(ActionEvent actionEvent) {
     
        try {
            item  = daoItem.salvar(item);
            editando = false;
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Registro gravado com sucesso."));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro : " + ex.getMessage(), null));
        }

        System.out.println("ID item: " + item);

    }

    public void excluir(ActionEvent actionEvent) {
       
        try {
            daoItem.excluir(item);
            item = new Item();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Excluído com sucesso."));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao excluir: " + ex.getMessage(), null));
        }
    }

    public void editar(ActionEvent actionEvent) {
       
        regAnterior = item;
        editando = true;
    }

    public void cancelar(ActionEvent actionEvent) {
     
        item = regAnterior;
        editando = false;
    }

    public void novo(ActionEvent actionEvent) {
      
        regAnterior = item;
        item = new Item();
        editando = true;
        
    }
    
    public void setItemSelecionado(Item item) {
        if (item != null) {
            this.itemSelecionado = item;
            this.item = this.itemSelecionado;
            System.out.println("setItemSelecionado: " + itemSelecionado.getDescricao());
        }
    }

    public Item getItemSelecionado() {
        System.out.println("getItemSelecionado" + itemSelecionado.getDescricao());
        return this.itemSelecionado;

    }
    
    public String getItemPesquisa() {
        return itemPesquisa;
    }

    public void setItemPesquisa(String itemPesquisa) {
        this.itemPesquisa = itemPesquisa;
    }

    public List<Item> getFiltraItemDescricao() {
        if (getItemPesquisa() != null && getItemPesquisa().length() > 1)
        return daoItem.buscaServicosDescricao(getItemPesquisa());
        else return null;
    }

    public boolean isEditando() {
        return editando;
    }

    public boolean isNovoDesativado() {
        return isEditando();
    }

    public boolean isEditarDesativado() {
        return (isEditando() || item.getIdItem() == null);
    }

    public boolean isSalvarDesativado() {
        return !isEditando();
    }

    public boolean isExcluirDesativado() {
        return isEditarDesativado();
    }

    public boolean isCancelarDesativado() {
        return isSalvarDesativado();
    }

    public boolean isCamposDesativados() {
        return !isEditando();
    }

    public boolean isPesquisarDesativado() {
        return isNovoDesativado();
    }
    
}
